package br.com.cnpv.modelo.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;


@Entity
@Table(name="vistoria_evento")
@NamedQueries(
		{
			@NamedQuery(name="VistoriaEvento.listarConcl", query="select v from VistoriaEvento v join fetch v.evento e join fetch e.associacao a join fetch e.veiculoCliente vc join fetch vc.veiculo vi join fetch v.tipoVistoria where v.evento.idAssociacao = :idAssociacao and v.idTipoVistoria = 3"),
			@NamedQuery(name="VistoriaEvento.listarPend", query="select v from VistoriaEvento v join fetch v.evento e join fetch e.associacao a join fetch e.veiculoCliente vc join fetch vc.veiculo vi join fetch v.tipoVistoria where v.evento.idAssociacao = :idAssociacao and v.idTipoVistoria in (1,2)")
		}
	)
public class VistoriaEvento {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id")
	private Integer id;
	
	@Column(name="id_evento")
	private Integer idEvento;
	
	@Column(name="id_cat_evento")
	private Integer idCatEvento;
	
	@Column(name="id_tipo_vistoria")
	private Integer idTipoVistoria;
	
	@Column(name="ds_comentario")
	private String dsComentario;
	
	@Column(name="val_mao_obra")
	private Double valMaoObra;
	
	@Column(name="val_pecas")
	private Double valPecas;
	
	@Column(name="val_total")
	private Double valTotal;
	
	@Column(name="dt_incl")
	private Date dtIncl;
	
	@Column(name="dt_alter")
	private Date dtAlter;
	
	@Column(name="dt_inat")
	private Date dtInat;
	
	@Column(name="id_usuario")
	private Integer idUsuario;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="id_evento", insertable=false, updatable=false, referencedColumnName="id")
	private Evento evento;

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="id_tipo_vistoria", insertable=false, updatable=false, referencedColumnName="id")
	private TipoVistoria tipoVistoria;
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Integer getIdEvento() {
		return idEvento;
	}

	public void setIdEvento(Integer idEvento) {
		this.idEvento = idEvento;
	}

	public Integer getIdCatEvento() {
		return idCatEvento;
	}

	public void setIdCatEvento(Integer idCatEvento) {
		this.idCatEvento = idCatEvento;
	}

	public Integer getIdTipoVistoria() {
		return idTipoVistoria;
	}

	public void setIdTipoVistoria(Integer idTipoVistoria) {
		this.idTipoVistoria = idTipoVistoria;
	}

	public String getDsComentario() {
		return dsComentario;
	}

	public void setDsComentario(String dsComentario) {
		this.dsComentario = dsComentario;
	}

	public Double getValMaoObra() {
		return valMaoObra;
	}

	public void setValMaoObra(Double valMaoObra) {
		this.valMaoObra = valMaoObra;
	}

	public Double getValPecas() {
		return valPecas;
	}

	public void setValPecas(Double valPecas) {
		this.valPecas = valPecas;
	}

	public Double getValTotal() {
		return valTotal;
	}

	public void setValTotal(Double valTotal) {
		this.valTotal = valTotal;
	}

	public Date getDtIncl() {
		return dtIncl;
	}

	public void setDtIncl(Date dtIncl) {
		this.dtIncl = dtIncl;
	}

	public Date getDtAlter() {
		return dtAlter;
	}

	public void setDtAlter(Date dtAlter) {
		this.dtAlter = dtAlter;
	}

	public Date getDtInat() {
		return dtInat;
	}

	public void setDtInat(Date dtInat) {
		this.dtInat = dtInat;
	}

	public Integer getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	public Evento getEvento() {
		return evento;
	}

	public void setEvento(Evento evento) {
		this.evento = evento;
	}

	public TipoVistoria getTipoVistoria() {
		return tipoVistoria;
	}

	public void setTipoVistoria(TipoVistoria tipoVistoria) {
		this.tipoVistoria = tipoVistoria;
	}
}